/**
 * describe:
 *
 * @author chaP
 * @date 2019/04/07
 */
package CodingTest.AC20190407;

public class missingNumber {
    public int missingNumber1(int[] nums){
        int len = nums.length;
        int sum = 0;
        for(int i =0;i< len+1;i++){
            sum += i;
        }
        int sum1 =0;
        for(int e:nums){
            sum1+=e;
        }
        return (sum-sum1);
    }
    //好像和以前的一道题（只出现一次的数字）有异曲同工之处。看了大家的题解，异或操作（^）是一种很好的方式，不用考虑sum越界问题。
    //
    //举个例子：
    //
    //0 ^ 4 = 4
    //4 ^ 4 = 0
    //那么，就可以不用求和，直接使用异或运算^进行 抵消，剩下的数字就是缺失的了。
    public int missingNumber2(int[] nums){
        int sum = 0;
        for(int i = 0;i<nums.length;i++){
            sum ^=nums[i];
            sum ^=i;
            if(i == nums.length-1) sum^=i+1;

        }
        return sum;
    }
}
